<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Conjunto de Caracteres - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.search.lucene.charset.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.search.lucene.charset.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.search.lucene.query-api.html">Query Construction API</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.search.lucene.html">Zend_Search_Lucene</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.search.lucene.extending.html">Extensibilidade</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.search.lucene.charset" class="section"><div class="info"><h1 class="title">Conjunto de Caracteres</h1></div>
    

    <div class="section" id="zend.search.lucene.charset.description"><div class="info"><h1 class="title">Suporte aos conjuntos de caracteres UTF-8 e single-byte</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Search_Lucene</span> trabalha internamente com o conjunto de
            caracteres UTF-8. Arquivos de índice armazenam dados unicode no formato de codificação
            &quot;UTF-8 modificado&quot; usado pelo Java. O núcleo do
            <span class="classname">Zend_Search_Lucene</span> suporta esta codificação plenamente, com uma
            exceção.

            <a href="#fnid1" name="fn1"><sup>[1]</sup></a>
               
                   <span class="classname">Zend_Search_Lucene</span>

               
            
        </p>

        <p class="para">
            A codificação dos dados de entrada pode ser especificada através da
            <acronym class="acronym">API</acronym> de <span class="classname">Zend_Search_Lucene</span>. Os dados serão
            convertidos automaticamente na codificação UTF-8.
        </p>
    </div>

    <div class="section" id="zend.search.lucene.charset.default_analyzer"><div class="info"><h1 class="title">Analisador de texto padrão</h1></div>
        

        <p class="para">
            De qualquer modo, o analisador de texto padrão (que também é usado no analisador de
            consultas) utiliza ctype_alpha() para a separação de texto e consultas em tokens.
        </p>

        <p class="para">
            ctype_alpha() não é compatível com UTF-8, por isso o analisador converte o texto para a
            codificação &#039;ASCII//TRANSLIT&#039; antes da indexação. O mesmo processo é realizado
            transparentemente durante a análise da consulta.

            <a href="#fnid2" name="fn2"><sup>[2]</sup></a>
               
            
        </p>

        <blockquote class="note"><p><b class="note">Note</b>: <span class="info"><b></span>
            
            <p class="para">
                O analisador padrão não trata os números como parte de termos. Utilize o analisador
                &#039;Num&#039; correspondente se você não quer que palavras sejam quebradas por números.
            </p>
        </p></blockquote>
    </div>

    <div class="section" id="zend.search.lucene.charset.utf_analyzer"><div class="info"><h1 class="title">Analisadores de texto compatíveis com UTF-8</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Search_Lucene</span> também contém um conjunto de analisadores
            compatíveis com UTF-8:
            <span class="classname">Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8</span>,
            <span class="classname">Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num</span>,
            <span class="classname">Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive</span>,
            <span class="classname">Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive</span>.
        </p>

        <p class="para">
            Qualquer um desses analisadores pode ser ativado como o código a seguir:
        </p>

        <pre class="programlisting brush: php">
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
</pre>


        <div class="warning"><b class="warning">Warning</b><div class="info"><h1 class="title"/></div>
            
            <p class="para">
                Os analisadores compatíveis com UTF-8 foram melhorados no Zend Framework 1.5. As
                primeiras versões dos analisadores assumiam como sendo letras todos os caracteres
                que não fossem ASCII. A implementação dos novos analisadores possui um comportamento
                mais correto.
            </p>

            <p class="para">
                Isso pode exigir que você reconstrua o índice para ter os dados e as consultas de
                pesquisas separados em tokens do mesmo formato, caso contrário o motor de busca pode
                retornar conjuntos de resultados errados.
            </p>
        </div>

        <p class="para">
            Todos estes analisadores necessitam da biblioteca PCRE (Perl-compatible regular
            expressions) compilada com suporte à UTF-8 ativado. O suporte à UTF-8 do PCRE está
            ativado nas fontes da biblioteca PCRE fornecidas com o código fonte do
            <acronym class="acronym">PHP</acronym>, mas se uma biblioteca compartilhada é usada em vez do pacote com
            as fontes do <acronym class="acronym">PHP</acronym>, então o estado do suporte à UTF-8 vai depender de
            seu sistema operacional.
        </p>

        <p class="para">
            Use o seguinte código para verificar, se o PCRE com suporte à UTF-8 está habilitado:
        </p>

        <pre class="programlisting brush: php">
if (@preg_match(&#039;/\pL/u&#039;, &#039;a&#039;) == 1) {
    echo &quot;PCRE com suporte a Unicode está ativado.\n&quot;;
} else {
    echo &quot;PCRE com suporte a Unicode está desativado.\n&quot;;
}
</pre>


        <p class="para">
            Versões dos analisadores compatíveis com UTF-8 insensíveis a maiúsculas e minúsculas
            precisam também da extensão <a href="http://www.php.net/manual/en/ref.mbstring.php" class="link external">&raquo; mbstring</a> habilitada.
        </p>

        <p class="para">
            Se você não quer ativar a extensão mbstring, mas precisa de buscas sem diferenciação de
            maiúsculas e minúsculas, pode-se usar a seguinte abordagem: normalizar os dados antes da
            indexação e a string de consulta antes de pesquisar, convertendo-os em minúsculas:
        </p>

        <pre class="programlisting brush: php">
// Indexando
setlocale(LC_CTYPE, &#039;de_DE.iso-8859-1&#039;);

...

Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());

...

$doc = new Zend_Search_Lucene_Document();

$doc-&gt;addField(Zend_Search_Lucene_Field::UnStored(&#039;contents&#039;,
                                                  strtolower($contents)));

// Título de campo para pesquisa direta (indexado, não armazenado)
$doc-&gt;addField(Zend_Search_Lucene_Field::UnStored(&#039;title&#039;,
                                                  strtolower($title)));

// Título de campo para recuperação (não indexado, armazenado)
$doc-&gt;addField(Zend_Search_Lucene_Field::UnIndexed(&#039;_title&#039;, $title));
</pre>


        <pre class="programlisting brush: php">
// Buscando
setlocale(LC_CTYPE, &#039;de_DE.iso-8859-1&#039;);

...

Zend_Search_Lucene_Analysis_Analyzer::setDefault(
    new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());

...

$hits = $index-&gt;find(strtolower($query));
</pre>

    </div>
<div class="footnote"><a name="fnid1" href="#fn1"><sup>[1]</sup></a><span class="para footnote"> suporta somente os caracteres do Plano
                   Multilingual Básico (BMP) (de 0x0000 a 0xFFFF), não suportando os caracteres
                   suplementares (caracteres acima de 0xFFFF)
               </span><span class="para footnote">
                   O Java 2 representa estes caracteres como um par de valores do tipo char
                   (16 bits), o primeiro vem da faixa superior (0xD800-0xDBFF), o segundo, da faixa
                   inferior (0xDC00-0xDFFF). Logo eles são codificados como caracteres usuais UTF-8
                   em seis bytes. A representação padrão UTF-8 utiliza quatro bytes para caracteres
                   suplementares.
               </span></div>
<div class="footnote"><a name="fnid2" href="#fn2"><sup>[2]</sup></a><span class="para footnote">
                   A conversão para 'ASCII//TRANSLIT' depende da localidade atual e do SO.
               </span></div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.search.lucene.query-api.html">Query Construction API</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.search.lucene.html">Zend_Search_Lucene</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.search.lucene.extending.html">Extensibilidade</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.search.lucene.html">Zend_Search_Lucene</a></li>
  <li><a href="zend.search.lucene.overview.html">Resumo</a></li>
  <li><a href="zend.search.lucene.index-creation.html">Construindo &Iacute;ndices</a></li>
  <li><a href="zend.search.lucene.searching.html">Searching an Index</a></li>
  <li><a href="zend.search.lucene.query-language.html">Query Language</a></li>
  <li><a href="zend.search.lucene.query-api.html">Query Construction API</a></li>
  <li class="active"><a href="zend.search.lucene.charset.html">Conjunto de Caracteres</a></li>
  <li><a href="zend.search.lucene.extending.html">Extensibilidade</a></li>
  <li><a href="zend.search.lucene.java-lucene.html">Interoperando com Java Lucene</a></li>
  <li><a href="zend.search.lucene.advanced.html">Avan&ccedil;ado</a></li>
  <li><a href="zend.search.lucene.best-practice.html">Best Practices</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>